package com.cqhilink.iot.jobstandardmanagement.facade.service.entitytype;

import com.alibaba.fastjson.JSONObject;
import com.cqhilink.iot.jobstandardmanagement.facade.model.Employee;
import com.cqhilink.iot.jobstandardmanagement.facade.model.EntityType;
import com.cqhilink.iot.jobstandardmanagement.facade.model.Ztree;

import java.util.List;

/**
 * Created by huangxueqian@cqhilink.com on 2016/11/21.
 * 生产实体类型服务类
 */
public interface JsmEntityTypeService {

    /**
     * 查询生产实体类型树
     *
     * @return
     */
    public List<Ztree> listTree(EntityType entityType);

    /**
     * 新增生产实体类型
     *
     * @param entityType 生产实体类型
     * @return
     * @throws Exception
     */
    public Integer addEntityType(EntityType entityType, Employee employee,String uploadFiles,String deletedFiles) throws Exception;

    /**
     * 查询生产实体类型唯一标识
     *
     * @param entityTypeId 生产实体类型唯一标识
     * @return
     * @throws Exception
     */
    public EntityType selectEntityType(String entityTypeId) throws Exception;

    /**
     * 删除生产实体类型
     *
     * @param entityTypeId 生产实体类型唯一标识
     * @return
     * @throws Exception
     */
    public Integer delEntityType(String entityTypeId) throws Exception;

    /**
     * 删除生产实体类型
     *
     * @param entityTypeId 生产实体类型唯一标识
     * @return
     * @throws Exception
     */
    public Integer delete(String entityTypeId) throws Exception;

    /**
     * 查询生产实体类型，根据生产实体类型ID
     *
     * @param entityTypeId 生产实体类型唯一标识
     * @return
     * @throws Exception
     */
    EntityType findEntityTypeById(String entityTypeId) throws Exception;

    /**
     * 查询生产实体类型特性值树
     *
     * @return
     */
    List<Ztree> toFormlistTree();

    /**
     *  查询当前实体类型 和 当前实体类型的子实体类型
     */
    List<Ztree> getEntityTypeList(String entityTypeId);

    /**
     * 查询全部的实体类型树
     */
    List<Ztree> getAllEntityTypeZtree() ;


    /**
     * @param entityType 设备类型
     */
    List<EntityType> getEntityTypeTable(EntityType entityType) throws  Exception ;

    /**
     * @param entityType 设备类型
     */
    public JSONObject getEntityTypeTableJson(EntityType entityType) throws Exception ;


    /**
     * @param entityType 设备类型
     */
    List<EntityType>  selectAllList(EntityType entityType);
}
